/**
 * 流程实例管理
 */
layui.define(['index'], function (exports) {  //先加载index模块，里面配置了全局的入口
  const admin = layui.admin
      ,form = layui.form
      ,table = layui.table
      ,layer = layui.layer
      ,dropdown = layui.dropdown;

  let fw = {
    // 删除（作废）
    handleDelete: function (index, procInstId, callback) {
      //提交 Ajax 成功后，更新表格中的数据
      admin.req({
        url: '/flow/instance/delete'
        , type: 'post'
        , data: {"procInstId": procInstId, "reason": '作废删除'}
        , done: function (res) {
          //执行成功
          layer.msg(res.msg, {icon: 1});
          // 执行传入的回调函数，并将结果传递给它
          if (typeof callback === 'function') {
            callback();
          }
          layer.close(index); //关闭弹层
        }
      });
    },
    // 撤回
    handleCancel: function (procInstId, callback) {
      //提交 Ajax 成功后，更新表格中的数据
      admin.req({
        url: '/flow/instance/cancel'
        , type: 'post'
        , data: {"procInstId": procInstId}
        , done: function (res) {
          //执行成功
          layer.msg(res.msg, {icon: 1});
          // 执行传入的回调函数，并将结果传递给它
          if (typeof callback === 'function') {
            callback();
          }
        }
      });
    },
    // 启动
    handleStart: function (obj, callback) {
      //提交 Ajax 成功后，更新表格中的数据
      admin.req({
        url: '/flow/instance/start'
        , type: 'post'
        , contentType: 'application/json;charset=utf-8'
        , dataType: 'json'
        , data: JSON.stringify(obj)
        , done: function (res) {
          //执行成功
          layer.msg(res.msg, {icon: 1});
          // 执行传入的回调函数，并将结果传递给它
          if (typeof callback === 'function') {
            callback();
          }
        }
      });
    },
    // 详情
    handleDetail: function (procInstId, callback) {
      layer.open({
        type: 2
        , title: '详情'
        , content: '/flow/instance/turn/detail?processInstId=' + procInstId
        , area: ['66%', '100%']
        , resize: false
        , btn: ['确认', '取消']
        , btnAlign: 'r'
        , maxmin: true
        , offset: 'r'
        , anim: 'slideLeft' // 从右往左
        , yes: function (index, layero) {
          layer.close(index);
        }
        , btn2: function (index, layero) {
          layer.close(index);
        }
        , end: function () {
          // 执行传入的回调函数，并将结果传递给它
          if (typeof callback === 'function') {
            callback();
          }
        }
      });
    },
    // 委派任务
    handleDelegate: function (taskId, assignee, callback) {
      //提交 Ajax 成功后，更新表格中的数据
      admin.req({
        url: '/flow/instance/task/delegate'
        , type: 'post'
        , data: {"taskId": taskId, "assignee": assignee}
        , done: function (res) {
          //执行成功
          layer.msg(res.msg, {icon: 1});
          // 执行传入的回调函数，并将结果传递给它
          if (typeof callback === 'function') {
            callback();
          }
        }
      });
    },
    // 指派任务
    handleAssign: function (taskId, assignee, callback) {
      //提交 Ajax 成功后，更新表格中的数据
      admin.req({
        url: '/flow/instance/task/assign'
        , type: 'post'
        , data: {"taskId": taskId, "assignee": assignee}
        , done: function (res) {
          //执行成功
          layer.msg(res.msg, {icon: 1});
          // 执行传入的回调函数，并将结果传递给它
          if (typeof callback === 'function') {
            callback();
          }
        }
      });
    },
    // 完成提交任务
    handleAudit: function (taskId, variables, callback) {
      //提交 Ajax 成功后，更新表格中的数据
      admin.req({
        url: '/flow/instance/task/complete'
        , type: 'post'
        , data: {
          "taskId": taskId,
          "taskStatus": "A",
          "comment": "同意",
          "variables": variables
        }
        , done: function (res) {
          //执行成功
          layer.msg(res.msg, {icon: 1});
          // 执行传入的回调函数，并将结果传递给它
          if (typeof callback === 'function') {
            callback();
          }
        }
      });
    }
  }

  //对外暴露的接口
  exports('fw', fw);
});